home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_oth / tasking / bioskeyb.mod < prev    next >
Text File  |  1986-07-22  |  1KB  |  46 lines

  1. IMPLEMENTATION MODULE BIOSKeyboard;
  2.   FROM SYSTEM IMPORT SWI, SETREG, GETREG, AX, BX, CODE;
  3.  
  4.   PROCEDURE Read(VAR ch, scan: CHAR);
  5.     VAR
  6.       tmp: CARDINAL;
  7.     BEGIN
  8.       SETREG(AX, 0);
  9.       SWI(16H);
  10.       GETREG(AX, tmp);
  11.       ch := CHR(tmp MOD 100H);
  12.       scan := CHR(tmp DIV 100H);
  13.     END Read;
  14.  
  15.   PROCEDURE Check(VAR ch, scan: CHAR; VAR avail: BOOLEAN);
  16.     VAR
  17.       tmp: CARDINAL;
  18.       flags: BITSET;
  19.     BEGIN
  20.       SETREG(AX, 100H);
  21.       SWI(16H);
  22.       CODE(
  23.         9CH, (* push flags *)
  24.         5BH);  (* pop bx *)
  25.       GETREG(AX, tmp);
  26.       GETREG(BX, flags);
  27.       avail := NOT(6 IN flags); (* test zero flag *)
  28.       IF avail THEN
  29.         ch := CHR(tmp MOD 100H);
  30.     scan := CHR(tmp DIV 100H);
  31.       END;
  32.     END Check;
  33.  
  34.   PROCEDURE GetStatus(VAR stat: Status);
  35.     VAR
  36.       tmp: CARDINAL;
  37.     BEGIN
  38.       SETREG(AX, 200H);
  39.       SWI(16H);
  40.       GETREG(AX, tmp);
  41.       tmp := tmp MOD 100H;
  42.       stat := Status(tmp);
  43.     END GetStatus;
  44.  
  45.   END BIOSKeyboard.
  46.